package cn.csc.module.product.convert.spu;

import cn.csc.framework.common.pojo.PageResult;
import cn.csc.module.product.api.spu.dto.SpuDTO;
import cn.csc.module.product.controller.admin.spu.vo.*;
import cn.csc.module.product.controller.app.spu.vo.AppSpuCreateReqVO;
import cn.csc.module.product.controller.app.spu.vo.AppSpuRespVO;
import cn.csc.module.product.dal.dataobject.spu.SpuDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * spu信息 Convert
 *
 * @author liuchuang
 */
@Mapper
public interface SpuConvert {

    SpuConvert INSTANCE = Mappers.getMapper(SpuConvert.class);

    SpuDO convert(SpuCreateDataReqVO createReqVO);

    SpuDO convertV2(SpuCreateDataReqV2VO createReqVO);

    SpuDO convert(SpuUpdateReqVO bean);

    SpuDO convertV2(SpuUpdateReqV2VO bean);

    SpuDO convert(SpuShopDataReqVO createReqVO);

    SpuDO convertV2(SpuShopDataReqV2VO createReqVO);

    SpuRespVO convert(SpuDO bean);

    SpuDataRespVO convertData(SpuDO bean);

    SpuDataRespV2VO convertDataV2(SpuDO bean);

    List<SpuRespVO> convertList(List<SpuDO> list);

    List<SpuDataRespVO> convertList2(List<SpuDO> spuDOS);

    List<AppSpuRespVO> convertList3(List<SpuDO> spuDOS);

    PageResult<SpuRespVO> convertPage(PageResult<SpuDO> page);

    PageResult<SpuRespV2VO> convertV2Page(PageResult<SpuDO> page);

    List<SpuExcelVO> convertList02(List<SpuDO> list);

    SpuDTO convertDTO(SpuDO bean);
    List<SpuDTO> convertList03(List<SpuDO> list);
    @Mappings(
            @Mapping(target = "shopName", ignore = true)
    )
    SpuDO convert(AppSpuCreateReqVO reqVO);


}
